\chapter{Metodolog\'ia de Trabajo}
%(completar testing y analisis estatico de cod)}

\section{Pr\'acticas De Software}

\begin{itemize}
 \item \textbf{Dise\~no:} Durante el desarrollo de \combeng, aproximadamente el 50 por ciento del tiempo fue dedicado al dise\~no. En este porcentaje esta 
   incluido el dise\~no original y algunos cambios que debieron ser hechos durante la implementaci\'on. 
   Para obtener como resultado un dise\~no que respeta, entre otras cosas, dos principios b\'asicos: Simplicidad y ocultamiento de la informaci\'on, 
   se utilizaron Patrones de Dise\~no\cite{Gamma95} y UML.
 \item \textbf{Construcci\'on de c\'odigo:} Aproximadamente el 30 por ciento del tiempo fue dedicado a la construcci\'on del c\'odigo. Cada vez que se implemento un nuevo componente se cheque\'o la integraci\'on del mismo con todo el proyecto. Cuando superaba la prueba, el c\'odigo era subido al \textbf{trunk} del repositorio.
 \item \textbf{Revisiones:} La mayor\'ia de las operaciones \emph{commits} realizadas (incluyendo c\'odigo, diagramas, documentos de responsabilidades, etc.) fueron revisadas por al menos dos personas. No solo se resaltaron errores, sino tambi\'en cuestiones en cuando a calidad y eficiencia. Cada vez que se encontr\'o un error o sugerencia, una nueva revisi\'on fue creada conteniendo la soluci\'on.
 \item \textbf{Seguimiento de issues:} Los Bugs y defectos del proyecto fueron reportados como Issues. Luego, para cada issue, se creo una nueva revisi\'on conteniendo la soluci\'on.
 \end{itemize}

\section{Gesti\'on de la Configuraci\'on}
Para desarrollar \combeng \ y algunas aplicaciones de ejemplo (\textit{Clothes-Changer}, \textit{RNAFoldingFE}) fue necesario utilizar un manejador de versiones.
Para ello se manipul\'o un repositorio SVN alojado en GoogleCode con el fin de poder seguir la pista a todos los archivos que componen el proyecto.
Para m\'as informaci\'on acerca de qu\'e es y c\'omo utilizar Subversion puede consultarse los libros de O'Reilly [Sussman et al., 2008]. 

\section{GNU/Linux y Software Libre}
Tanto el sistema operativo como todas las herramientas que se usaron para el desarrollo del proyecto son libres. Hasta el momento, la licencia libre mas usada es GPL (General Public Licence), una copia de la misma pude ser encontrada en: \begin{verbatim} http://www.gnu.org/licenses/gpl-3.0.txt \end{verbatim}
\section{Herramientas}
Durante la realizaci\'on del proyecto fueron utilizadas distintas herramientas, todas ellas bajo licencia GPL. A continuaci\'on se muestra una lista 
de las m\'as usadas.

\subsection{GNU Toolchain}
Este proyecto fue realizado bajo el sistema operativo GNU/Linux, \'este cuenta con una serie de herramientas de gran utilidad e importancia. Las m\'as
utilizadas durante el desarrollo fueron:
\begin{itemize}
  \item \textbf{GCC (GNU Compiler Collection)}: Es un conjunto de compiladores creados por el proyecto GNU. GCC es software libre y se distribuye bajo
    licencia GPL. Estos compiladores se consideran est\'andar para sistemas operativos derivados de GNU.\footnote{\url{http://gcc.gnu.org/}}
  \item \textbf{GDB (GNU Debugger)}: Es un depurador portable que se puede utilizar en varias plataformas Unix y funciona para varios lenguajes de
    programaci\'on como C y C++ entre otros. GDB fue escrito por Richard Stallman en 1988, es software libre y se distribuye bajo licencia GPL.
    \footnote{\url{www.gnu.org/software/gdb/}}
  \item \textbf{CMake}: Es una familia de herramientas dise\~nadas para construir, probar y empaquetar software. CMake se utiliza para controlar el
    proceso de compilaci\'on del software usando archivos de configuraci\'on sencillos e independientes de la plataforma.\footnote{\url{www.cmake.org}}
 \end{itemize}

\subsection{Latex}
Todo este documento fue escrito en \LaTeX. Leslie Lamport en 1984, con la intenci\'on de facilitar el uso de \TeX \ (lenguaje de composici\'on tipográfica,
creado por Donald Knuth), cre\'o un sistema de composici\'on de textos. El mismo est\'a orientado especialmente a la creaci\'on de libros, documentos
cient\'ificos y t\'ecnicos que contengan f\'ormulas matem\'aticas. A dicho sistema lo llam\'o \LaTeX \ y est\'a formado por un gran conjunto de macros de
\TeX.

\subsection{Edici\'on}
\begin{itemize}
  \item \textbf{Gedit}: Editor de texto plano.\footnote{\url{http://projects.gnome.org/gedit/}}
  \item \textbf{Kile}: Editor para \LaTeX.\footnote{\url{http://kile.sourceforge.net/}}
 \item \textbf{vim+latexSuite}: Vim es un editor de texto altamente configurable construido para permitir la edici\'on de texto eficientemente.
     Se trata de una versi\'on mejorada del editor \textit{Vi} distribuido en la mayor\'ia de los sistemas UNIX. Adem\'as, latexSuite es un plugin para Vim,
     que integra una suite de \LaTeX.
\end{itemize}

\subsection{Gr\'aficos}
\begin{itemize}
  \item \textbf{Gimp}: Editor de im\'agenes.\footnote{\url{www.gimp.org}}
  \item \textbf{Bouml}: Editor de diagramas UML.\footnote{\url{http://bouml.free.fr/}}
  \item \textbf{UMLet}: Editor de diagramas UML.\footnote{\url{www.umlet.com}}
  \item \textbf{Dia}: Editor de diagramas de prop\'osito general.\footnote{\url{http://live.gnome.org/Dia}}
\end{itemize}

\subsection{Documentaci\'on}
\begin{itemize}
  \item \textbf{Doxygen}: Generador de documentaci\'on para m\'ultiples lenguajes.\footnote{\url{www.doxygen.org}}
\end{itemize}

\subsection{An\'alisis Est\'atico de C\'odigo}
\begin{itemize}
 \item gcc con flags
 \item cppcheck
\end{itemize}

\subsection{An\'alisis Estad\'istico}
\begin{itemize}
  \item \textbf{R}: Lenguaje y entorno de programaci\'on para realizar an\'alisis estad\'isticos y gr\'aficos.\footnote{\url{www.r-project.org}}.
\end{itemize}

